FreeBSD on the Pinebook Pro
https://gyazo.com/57520114ccf9ada708f6ee2eae397787
はじめに
FreeBSD Journal • March/April 2022で、Pinebook ProでFreeBSDを動かす方法に関しての記事が公開されました。 作業をするには、以下の文章がとても参考になります。
Jesper Schmitz Mouridsen(jsm)さんによる現状のまとめ
桐山さんによる試行錯誤
サポートされているハードウエア(記事より)
グラフィックス: panfrostドライバ (by Ruslan Buki)とdrm-subtree (by Emmanuel Vadot)への作業でDRMを使った高速グラフィックスが利用可能
まだ不安定: メモリー関連のPanicがしばしば起こる
音声の録音と再生 (by Alexander Tymoshenko)
ストレージ: eMMCとSDカードの両方利用可能
PCIブリッジ: SSDでサポートされているが、UFSが変なことがある
CPU: 全てのコアをサポート。FreeBSDはbig.LITTLEを使っているので、最も速いコアの周波数はより遅い周波数を使う。
USB: 2ポート
タッチパッドとキーボード: タッチパッドはシンプルなマウスとしてのみ動く
カメラ: webcamdで使える
まだサポートされていないハードウエア(記事より)
Wi-Fi and Bluetooth
DP over USB-C (USB-C経由でのディスプレイ出力)
USB-C: gpioctlで有効にすれば動く
デバイスツリーでどのピンをどのように設定するのかわかってないと使わないで!!
bootable image
2022/12/19現在での最新イメージ
u-boot patch: eMMCを無効にしたり、Pinebook Pro用のパッチを含む
SDから起動する場合には使った方が良い
code:shell
sudo dd if=idbloader.img of=/dev/ld0 seek=64 bs=512 conv=sync
sudo dd if=u-boot.itb of=/dev/ld0 seek=16384 bs=512 conv=sync
SDから起動する場合: u-bootプロンプトでrun bootcmd_mmc1
sysinfo
現状のシステム情報は、以下のとおりです。
Xorg with DRM
DRI使う時は、videoグループに入っておく必要がある。
code:/etc/group
video:*:44:mutoh
DRI用のデバイスはできている
code:shell
$ ls -l /dev/dri/
/dev/dri/:
total 0
crw-rw---- 1 root video 0x5e Dec 21 11:34 card0
crw-rw---- 1 root video 0x60 Dec 21 11:34 card1
crw-rw---- 1 root video 0x5f Dec 21 11:34 renderD128
panfrostで動いていない?
modesettingを使ってる?
まだ不安定でメモリー関連の問題で落ちることが多い
https://gyazo.com/5e3cdc0e91c2a5f57d69e736fcc0a6b8
glxgearsで見ていると、DRI使ったほうが遅い時もある
DRI無し: 100FPS以上
https://gyazo.com/1b7e9789a04225839cdfc391f24d389f
DRIあり: 60FPSぐらいorz
https://gyazo.com/9d3dd8e0fd00d17780dcd787e1649fbb
パッチの必要なpkg
一部ports/pkgには、追加のパッチが必要です。
portsのパッチ
mesa-driやmesa-libsには、既に対応コードが入っています。
pkgのバージョンアップ時にDRM関連のパッケージが上がらないように、以下のようにlockしておいた方が良いです。
code:shell
sudo pkg lock libdrm-2.4.114,1
sudo pkg lock hikari-2.3.3_2
sudo pkg lock mesa-dri
sudo pkg lock mesa-libs
sudo pkg lock wlroots
sudo pkg lock sway
カメラの動作
webcamd経由でカメラが利用可能です。
dmesg
code:shell
$ dmesg |grep -i camera
ugen2.3: <Sonix Technology Co., Ltd. USB Camera> at usbus2
cuse
code:/boot/loader.conf
cuse_load="YES"
webcamd
code:/etc/rc.conf
webcamd_enable="YES"
webcamd_0_flags="-d ugen2.3"
code:shell
# Install
$ sudo pkg install webcamd pwcview
code:shell
$ sudo pw groupmod webcamd -m mutoh
NetBSDとのちがい
現状でのFreeBSDとNetBSDでのPinebook Pro対応の違いは、以下の表のとおりです。
table:FreeBSD vs NetBSD
FreeBSD NetBSD 備考
内蔵無線ネットワークインターフェース NG bwfm
X11 panfrost (GPU) modesetting, wsfb FreeBSDはまだ不安定
Camera webcamd uvideo
音声 pcm0, pcm1 audio
System clock sysctl sysctl, sysutils/estd estdで自動スケーリング可能
Batteryの状態 NG envstat(cwfg0), xbattbar
温度 NG envstat(rktsadc0)
バックライト pwm_backlight(backlight(8)) pwmbacklight(sysctl)
Info
FreeBSD
dmesg: 関連項目のみ(全部は前掲)
code:dmesg.sh
# Audio
pcm0: <simple-audio-card> on ofwbus0
gpioc0: <GPIO controller> on gpio0
gpioc1: <GPIO controller> on gpio1
gpioc2: <GPIO controller> on gpio2
gpioc3: <GPIO controller> on gpio3
gpioc4: <GPIO controller> on gpio4
gpioled0: <GPIO LEDs> on ofwbus0
pcm1: <simple-audio-card> on ofwbus0
simpleamp0: <Simple Amplifier> on ofwbus0
# Battery
## None?
# Temperature
rk_tsadc0: <RockChip temperature sensors> mem 0xff260000-0xff2600ff irq 35 on ofwbus0
# Network
## None
# Camera
ugen2.3: <Sonix Technology Co., Ltd. USB Camera> at usbus2
# Backlight
pwm_backlight0: <PWM Backlight> on ofwbus0
CPU frequency
code:shell
$ sysctl -a|grep freq_setting
dev.cpufreq_dt.5.freq_settings: 408/-1 600/-1 816/-1 1008/-1 1200/-1 1416/-1 1608/-1 1800/-1
dev.cpufreq_dt.4.freq_settings: 408/-1 600/-1 816/-1 1008/-1 1200/-1 1416/-1 1608/-1 1800/-1
dev.cpufreq_dt.3.freq_settings: 408/-1 600/-1 816/-1 1008/-1 1200/-1 1416/-1
dev.cpufreq_dt.2.freq_settings: 408/-1 600/-1 816/-1 1008/-1 1200/-1 1416/-1
dev.cpufreq_dt.1.freq_settings: 408/-1 600/-1 816/-1 1008/-1 1200/-1 1416/-1
dev.cpufreq_dt.0.freq_settings: 408/-1 600/-1 816/-1 1008/-1 1200/-1 1416/-1
NetBSD
dmesg: 関連項目のみ
code:dmesg.sh
# Audio
1.000004 ausoc1: codec: es8316ac0, cpu: rki2s0, aux: simpleamp0 1.000004 audio0 at ausoc1: playback, capture, full duplex 1.000004 audio0: slinear_le:16 -> slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for playback 1.000004 audio0: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for recording 1.000004 spkr0 at audio0: PC Speaker (synthesized) # Battery
1.000004 cwfg0 at iic1 addr 0x62: CellWise CW2015 Fuel Gauge IC (ver. 0x7 0)
# Temperature
1.000004 rktsadc0 at simplebus0: RK3399 Temperature Sensor ADC 1.000004 rktsadc0: interrupting on GICv3 irq 129 # Network (bwfm0)
3.438040 sdmmc2: 4-bit width, 50.000 MHz # Camera
4.948072 uvideo0 at uhub8 port 2 configuration 1 interface 0: Sonix Technology Co., Ltd. (0x0c45) USB Camera (0x6321), rev 2.00/0.00, addr 3 4.948072 video0 at uvideo0: Sonix Technology Co., Ltd. (0x0c45) USB Camera (0x6321), rev 2.00/0.00, addr 3 # Backlight
1.000004 pwmbacklight0 at simplebus0: PWM Backlight, 0-255 (256 steps) CPU frequency
code:shell
$ sysctl -a |grep machdep.cpufreq
machdep.cpufreq.cpu0.target = 1416
machdep.cpufreq.cpu0.current = 1416
machdep.cpufreq.cpu0.available = 1416 1200 1008 816 600 408
machdep.cpufreq.cpu4.target = 1800
machdep.cpufreq.cpu4.current = 1800
machdep.cpufreq.cpu4.available = 1800 1608 1416 1200 1008 816 600 408
Battery & Temperature (envstat)
code:shell
$ envstat
Current CritMax WarnMax WarnMin CritMin Unit
battery voltage: 3.994 V
battery percent: 87 none
battery remaining minutes: 306 0 0 0 0 none
CPU: 36.875 95.000 75.000 degC
GPU: 36.250 95.000 75.000 degC
Backlight
code:shell
$ sysctl -a |grep backlight
hw.drm2.radeon_backlight = -1
hw.pwmbacklight0.levels = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
hw.pwmbacklight0.level = 198
おわりに
Pinebook Pro用のFreeBSDでGPUが使えるようになっているのは驚きでした。
しかし、まだ対応がはじまったばかりなので、不安定なのは否めません。
みなさんも、一緒に開発を手伝いませんか!!